package ar.com.ctrln.persistence.model.cliente;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import ar.com.ctrln.persistence.model.contratacion.ContratacionServicio;
import ar.com.ctrln.persistence.model.organizacion.Organizacion;
import ar.com.ctrln.persistence.model.organizacion.TipoOrganizacion;
import ar.com.ctrln.persistence.model.persona.Telefono;

@Entity
@Table(name = "CLIENTE")
public class Cliente extends Organizacion {

	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	@JoinTable(name = "TELEFONOS_CLIENTE", joinColumns = { @JoinColumn(name = "id_organizacion") }, inverseJoinColumns = { @JoinColumn(name = "id_telefono") })
	private Set<Telefono> telefonos;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "id_tipo")
	private TipoOrganizacion tipoOrganizacion;
	
	@OneToMany(fetch=FetchType.EAGER)
	@JoinColumn(name = "id_organizacion")
	private Set<ContratacionServicio> contratos;
		
	public Set<ContratacionServicio> getContratos() {
		return contratos;
	}

	public void setContratos(Set<ContratacionServicio> contratos) {
		this.contratos = contratos;
	}

	public void setTipoOrganizacion(TipoOrganizacion tipoOrganizacion) {
		this.tipoOrganizacion = tipoOrganizacion;
	}

	public TipoOrganizacion getTipoOrganizacion() {
		return this.tipoOrganizacion;
	}
	

	@Override
	public Set<Telefono> getTelefonos() {
		return telefonos;
	}

	@Override
	public void setTelefonos(Set<Telefono> telefonos) {
		this.telefonos = telefonos;
	}

}
